package com.newsmanagement.dao;

import com.newsmanagement.entity.RoleEntity;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.Map;

/**
 * @author xbr
 * 2017/12/5
 * 角色操作
 */
@Mapper
public interface IRoleServiceDao {

    /**
     * 根据角色名称查询对应的角色信息
     * @param roleName 角色名称
     * @return Map
     */
    @Select("SELECT * FROM role_t WHERE ROLE_NAME = #{arg0}")
    Map<String ,Object> queryRoleByRoleName(String roleName);

    /**
     * 根据角色名称查询对应的角色信息
     * @param roleName 角色名称
     * @return RoleEntity
     */
    @Select("SELECT * FROM role_t WHERE ROLE_NAME = #{arg0}")
    Map<String ,Object> queryRoleByRoleNametest(String roleName);

    /**
     * 添加角色信息
     * @param userId 创建人id
     * @param roleName 角色名称
     * @return 添加的数据条数
     */
    @Insert("INSERT INTO role_t (" +
            "ROLE_NAME ,CREATE_USER ,CREATE_DATE ,UPDATE_USER ,UPDATE_DATE" +
            ") VALUES (" +
            "#{arg1} ,#{arg0} ,now() ,#{arg0} ,NOW()" +
            ")")
    int saveRole(Integer userId ,String roleName);

    /**
     * 激活并修改已删除的角色信息
     * @param userId 最后修改人id
     * @param roleName 角色名称
     */
    @Update("UPDATE role_t SET UPDATE_USER = #{arg0},UPDATE_DATE = NOW(),DELETE_FLAG = 1 WHERE ROLE_NAME = #{arg1}")
    void activationRoleByRoleName(Integer userId ,String roleName);

    /**
     * 修改角色
     * @param userId 操作的用户id
     * @param roleId 被操作的角色id
     * @param roleName 角色名称
     * @return 修改的数据条数
     */
    @Update("UPDATE role_t SET ROLE_NAME = #{arg2}, UPDATE_USER = #{arg0} ,UPDATE_DATE = NOW() ,DELETE_FLAG = 1 WHERE ROLE_ID = #{arg1}")
    int updateRoleById(Integer userId ,Integer roleId ,String roleName);

    /**
     * 删除角色：逻辑删除，即将DELETE_FLAG标记为0
     * @param userId 操作的用户id
     * @param roleId 被操作的角色id
     */
    @Update("UPDATE role_t SET UPDATE_USER = #{arg0} ,UPDATE_DATE = NOW() ,DELETE_FLAG = 0 WHERE ROLE_ID = #{arg1}")
    void deleteRole(Integer userId ,Integer roleId );


}
